package com.yf.zzmusic.service.impl;

import com.yf.zzmusic.common.Constants;
import com.yf.zzmusic.common.PageInfo;
import com.yf.zzmusic.exception.ServiceException;
import com.yf.zzmusic.pojo.dto.collect.CollectDeleteDTO;
import com.yf.zzmusic.pojo.dto.collect.CollectPageDTO;
import com.yf.zzmusic.pojo.entity.Collect;
import com.yf.zzmusic.mapper.CollectMapper;
import com.yf.zzmusic.pojo.vo.collect.CollectTableVO;
import com.yf.zzmusic.pojo.vo.music.MusicTableVO;
import com.yf.zzmusic.service.ICollectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 我喜欢，注意需要有逻辑删除，用来恢复 服务实现类
 * </p>
 *
 * @author
 * @since 2024-03-07
 */
@Service
public class CollectServiceImpl extends ServiceImpl<CollectMapper, Collect> implements ICollectService {
  @Autowired
  CollectMapper collectMapper;

  @Override
  public PageInfo<CollectTableVO> collectDetailsByPage(CollectPageDTO collectPageDTO) {
    //先取值
    Integer pageNum = collectPageDTO.getPageNum();
    Integer pageSize = collectPageDTO.getPageSize();
    //判断pageNum与pageSize
    if (pageNum == null) {
      pageNum = 1;
      collectPageDTO.setPageNum(1);
    }
    if (pageSize == null) {
      pageSize = 10;
      collectPageDTO.setPageSize(10);
    }
    //执行自定义查询,获取音乐列表
    if (pageNum >= 1) {
      collectPageDTO.setPageNum((pageNum - 1) * pageSize);
    }
    //获取总数
    Integer totalCount = collectMapper.collectDetailsByPageCount(collectPageDTO);
    List<CollectTableVO> musicTableVOList = collectMapper.collectDetailsByPage(collectPageDTO);
    //整理返回数据
    PageInfo<CollectTableVO> pageInfo = new PageInfo<>();
    pageInfo.setPageSize(pageSize);
    pageInfo.setPageNum(pageNum);
    pageInfo.setTotal(totalCount);
    pageInfo.setData(musicTableVOList);
    return pageInfo;
  }

  @Override
  public boolean logicDeleteCollectById(CollectDeleteDTO collectDeleteDTO) {
    return collectMapper.logicDeleteCollect(collectDeleteDTO) > 0;
  }

  @Override
  public boolean logicRecoveryCollectById(CollectDeleteDTO collectDeleteDTO) {
    return collectMapper.logicRecoveryCollect(collectDeleteDTO) > 0;
  }
}
